#include "btform.h"
#include "ui_btform.h"


BtForm::BtForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::BtForm)
{
    ui->setupUi(this);

    //只有本地下载存在动画效果，剩下的按钮的动画效果都进行隐藏。
    //将BtForm按钮的lineBox部分隐藏起来
    ui->lineBox->hide();

    //设置按钮右侧的动画效果
    //设置line1的动画效果
    //QPropertyAnimation(给哪个控件对象设置动画,动画形式(geometry表示矩形),指定父元素(对象树));
    line1Animal=new QPropertyAnimation(ui->line1,"geometry",this);
    //设置动画周期
    line1Animal->setDuration(1500);//单位：毫秒
    //设置动画关键帧
    //设置第一帧，在Qt坐标系上，第一帧为矩形最低(高度为0),描述这个矩形动画第一帧 QRect(x,y,宽度,高度)
    line1Animal->setKeyValueAt(0,QRect(0,15,2,0));
    //第二帧，矩形动画高度最高
    line1Animal->setKeyValueAt(0.5,QRect(0,0,2,15));
    //第三帧和第一帧相同
    line1Animal->setKeyValueAt(1,QRect(0,15,2,0));
    //setKeyValueAt第一个参数表示帧数，可以用[0,1]这个范围来表示每个帧
    //设置循环次数.参数为-1表示死循环执行
    line1Animal->setLoopCount(-1);
    //启动这个动画
    line1Animal->start();

    //设置line2的动画效果
    line2Animal=new QPropertyAnimation(ui->line2,"geometry",this);
    line2Animal->setDuration(1600);//单位：毫秒
    line2Animal->setKeyValueAt(0,QRect(7,15,2,0));
    line2Animal->setKeyValueAt(0.5,QRect(7,0,2,15));
    line2Animal->setKeyValueAt(1,QRect(7,15,2,0));
    line2Animal->setLoopCount(-1);
    line2Animal->start();

    //设置line3的动画效果
    line3Animal=new QPropertyAnimation(ui->line3,"geometry",this);
    line3Animal->setDuration(1700);//单位：毫秒
    line3Animal->setKeyValueAt(0,QRect(14,15,2,0));
    line3Animal->setKeyValueAt(0.5,QRect(14,0,2,15));
    line3Animal->setKeyValueAt(1,QRect(14,15,2,0));
    line3Animal->setLoopCount(-1);
    line3Animal->start();

    //设置line4的动画效果
    line4Animal=new QPropertyAnimation(ui->line4,"geometry",this);
    line4Animal->setDuration(1800);//单位：毫秒
    line4Animal->setKeyValueAt(0,QRect(21,15,2,0));
    line4Animal->setKeyValueAt(0.5,QRect(21,0,2,15));
    line4Animal->setKeyValueAt(1,QRect(21,15,2,0));
    line4Animal->setLoopCount(-1);
    line4Animal->start();


}

BtForm::~BtForm()
{
    delete ui;
}
//设置图标和按钮文本 参数:图片资源路径 文本名称 当前按钮的id
void BtForm::setIconAndText(const QString &btIcon, const QString &btText, int pageId)
{
    //设置按钮的图标
    ui->btIcon->setPixmap(QPixmap(btIcon));
    //设置按钮文本信息
    ui->btText->setText(btText);
    //将按钮和QQmusic中的page页面进行关联
    this->pageId=pageId;
}
//获取按钮id pageId
int BtForm::getpageId() const
{
    return pageId;
}
//清除此按钮的背景色
void BtForm::clearBackground()
{
    //ui->btStyle就是这个按钮对象
    //这里利用QSS的就近原则。重新设置以下这个按钮的QSS即可,就是此处对于#btStyle控件的QSS全部覆盖成接下来设置的
    ui->btStyle->setStyleSheet("#btStyle:hover{background-color:#D8D8D8;}");
}
//显示动画效果
void BtForm::showAnimal(bool isShow)
{
    //true:显示动画 false:隐藏动画
    if(isShow==true)
    {
        //显示动画
        ui->lineBox->show();
    }
    else
    {
        //隐藏动画
        ui->lineBox->hide();
    }

}
//鼠标按下事件的事件处理函数-重写
void BtForm::mousePressEvent(QMouseEvent *event)
{
    (void)event;
    //1、当按钮按下之后，更改此BtForm按钮的背景颜色
    ui->btStyle->setStyleSheet("#btStyle{background-color:rgb(30,206,154);}");
    //2、当按钮按下之后，需要切换bodyRight中的page页面
    //鼠标点击的时候进行切换
    //由谁来完成页面切换：利用信号槽机制，当点击此按钮之后发送一个自定义btClick信号，并书写此信号的槽函数即可
    //发送信号
    emit btclick(pageId);
}
